import { App, defineAsyncComponent } from "vue";
import { toLine } from "@/utils/index.ts";
import InfiniteMenu from "./menu/src/menu.tsx";
export default {
  install(app: App) {
    // 获取当前文件夹下的所有 index.ts 文件
    const components = import.meta.glob("./**/src/index.vue");
    // 遍历获取到的组件模块
    for (const path in components) {
      // 动态导入组件
      const loader: any = components[path];

      // 使用 defineAsyncComponent 包装 loader
      const asyncComponent = defineAsyncComponent(loader);
      // 拼接组件注册的 name
      const componentName = "m-" + toLine(path.replace("./", "").split("/")[0]);
      // 通过 defineAsyncComponent 异步导入指定路径下的组件
      app.component(componentName, asyncComponent);
    }
    app.component("m-infinite-menu", InfiniteMenu);
  },
};
